StaffScripts Mandare un form in una pop-up Autore: Riccardo Data: 28/03/2001 Downloads: 983 Voto: 2.5/5 Download P r o v a Mandare un form in una pop-up Una mail ricevuta ieri mi ha fatto riflettere su una domanda che viene spesso postata nel NewsGroup it.comp.lang.javascript: Come far si che i risultati di un form si aprano in una pop-up invece che nella stessa pagina che contiene il form? Far aprire il form in una nuova finestra del browser è facile, basta mettere target="_new" nel tag:
, mandarlo nella pop-up, invece, richiede che la pop-up venga aperta preventivamente. La mail riguardava un form per la ricerca di nomi a dominio liberi nel TLD ".it": -
Così com'è strutturato il risultato della ricerca finisce nella stessa pagina. Ma se dopo aver validato ll form apriamo la finestra otteniamo il risultato voluto: JsDir - Form in pop-up
Cerca domini.it


-
Il form è cambiato di poco: semplicemente abbiamo aggiunto target="fin". La finestra viene gestita direttamente dalla funzione validate(). La sintassi di validate() non dovrebbe cambiare di molto. Abbiamo bisogno di una variabile (invio), che preimpostiamo a false e che dovrà essere settata a true se il form può essere inviato. Subito dopo, prima di ritornare il valore al form controlliamo la variabile. Se è true apriamo la finestra con window.open() e dopo 200 ms confermiamo l'invio del form, altrimenti non apriamo la finestra e diamo un avviso con un alert() che è impossibile inviare il form, poi ritorniamo ancora il valore di invio al form che non sarà inviato. È chiaro che in quest'esempio ho messo l'alert nell'ultima parte dello script. Se la vostra funzione di validazione già avvisa l'utente l'alert() che vedete qui può essere omesso e resta solo il "return false;" per il form. Nel caso il form venga inviato ho messo un temporizzatore per lasciare al browser il tempo di aprire la nuova finestra e poi dare l'Ok al form. Sconsiglio di toglierlo, computer non troppo performanti, o con molti programmi aperti, potrebbero ritardare l'apertura della finestra. In ogni caso 200 millisecondi sono impercettibili per il visitatore.